
import java.util.HashMap;
import java.util.Iterator;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Santos
 */
public class CompatibilizaMatriz {

    static int INFINITO = 999999;
    private String[][] rede;
    private int[][] matrizCalculo;
    private int tamanho_matrizCalculo;
    HashMap<String, Integer> converterMatriz;

    public CompatibilizaMatriz(String[][] rede) {
        this.rede = rede;
        converterMatriz = new HashMap<String, Integer>();
        for (int i = 0; i < rede.length; i++) {
            String strings = rede[0][i];
            converterMatriz.put(strings, i - 1);

        }
        this.tamanho_matrizCalculo = rede.length - 1;//uma linha e uma coluna a menos
        this.matrizCalculo = new int[tamanho_matrizCalculo][tamanho_matrizCalculo];
    }

    public int[][] preencheMatrizCalculo() {
        for (int i = 0; i < tamanho_matrizCalculo; i++) {
            for (int j = 0; j < tamanho_matrizCalculo; j++) { //Converte para inteiro
                if ((rede[i + 1][j + 1] == null) || (rede[i + 1][j + 1].equals(""))) {
                    matrizCalculo[i][j] = INFINITO;
                } else {
                    matrizCalculo[i][j] = Integer.parseInt(rede[i + 1][j + 1]);
                }
            }
        }

        return matrizCalculo;//retorna matriz para cálculo
    }

    public String[][] atualizaTabelaOriginal() {
        for (int i = 0; i < tamanho_matrizCalculo; i++) {
            for (int j = 0; j < tamanho_matrizCalculo; j++) { //Converte para string
                if (matrizCalculo[i][j] == INFINITO) {
                    rede[i + 1][j + 1] = null;
                } else {
                    rede[i + 1][j + 1] = String.valueOf(matrizCalculo[i][j]);
                }
            }
        }

        return rede;
    }

    public int parsInt(String roteadorDestino) {
        return converterMatriz.get(roteadorDestino);
        /*   System.out.println(roteadorDestino);
        for (int i = 0; i < rede.length; i++) {
        if (rede[0][1]!=null && rede[0][i].equals(roteadorDestino)) {
        return i - 1;
        }
        }
        System.out.println("saiu do for");
        return -1;*/
    }

    public String parsString(Integer i) {
        for (Iterator it = converterMatriz.keySet().iterator(); it.hasNext();) {
            String string = (String) it.next();
            if (i.equals(converterMatriz.get(string))) {
                return string;
            }
        }
        return null;
        /*  System.out.println("Enviar para" + rede[0][i + 1]);
        return rede[0][i + 1];*/
    }
}
